Subversive-C: Abusing and Protecting Dynamic Message Dispatch

نویسندگان

  • Julian Lettner
  • Benjamin Kollenda
  • Andrei Homescu
  • Per Larsen
  • Felix Schuster
  • Lucas Davi
  • Ahmad-Reza Sadeghi
  • Thorsten Holz
  • Michael Franz
چکیده

The lower layers in the modern computing infrastructure are written in languages threatened by exploitation of memory management errors. Recently deployed exploit mitigations such as control-flow integrity (CFI) can prevent traditional return-oriented programming (ROP) exploits but are much less effective against newer techniques such as Counterfeit Object-Oriented Programming (COOP) that execute a chain of C++ virtual methods. Since these methods are valid control-flow targets, COOP attacks are hard to distinguish from benign computations. Code randomization is likewise ineffective against COOP. Until now, however, COOP attacks have been limited to vulnerable C++ applications which makes it unclear whether COOP is as general and portable a threat as ROP. This paper demonstrates the first COOP-style exploit for Objective-C, the predominant programming language on Apple’s OS X and iOS platforms. We also retrofit the Objective-C runtime with the first practical and efficient defense against our novel attack. Our defense is able to protect complex, real-world software such as iTunes without recompilation. Our performance experiments show that the overhead of our defense is low in practice.

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Taming Message Passing: Efficient Method Look-Up for Dynamically Typed Languages

Method look-up for dynamically typed object-oriented languages, such as SMALLTALK-80 or OBJECTIVE-C, is usually implemented by a cached inheritance search. Unfortunately, this technique is slow. A selector-indexed dispatch table implementation speeds up messages to within 10% of the speed of a statically typed language such as C++. We present a fast technique for generating compact selector-ind...

متن کامل

Message Dispatch on Pipelined Processors

Object-oriented systems must implement message dispatch efficiently in order not to penalize the object-oriented programming style. We characterize the performance of most previously published dispatch techniques for both staticallyand dynamically-typed languages with both single and multiple inheritance. Hardware organization (in particular, branch latency and superscalar instruction issue) si...

متن کامل

Compact Dispatch Tables for Dynamically Typed Object Oriented Languages

Dynamically typed object-oriented languages must perform dynamic binding for most message sends. Typically this is slow. A number of papers have reported on attempts to adapt C++-style selector table indexing to dynamically typed languages, but it is difficul to generate space-efficient tables. Our algorithm generates considerably smaller dispatch tables for languages with single inheritance th...

متن کامل

Optimizing Message Lookup in Dynamic Object-Oriented Languages with Sparse Arrays

Sparse Arrays provide a new way to reduce the overhead of message lookup by providing constant time access with moderate space consumption. For some architectures, such as the SPARC processor, the Sparse Array technique gives an approximate speedup of 50% over existing message lookup techniques. Sparse Arrays are especially useful for compiled dynamic languages like Objective-C, since such cann...

متن کامل

Protecting the Dynamic Dispatch in C++ by Dependability Aspects

Computer systems, especially devices with highly-miniaturized feature sizes, are unreliable. Data memory is susceptible to a number of physical effects that cause faults, which can be observed as spontaneous bit flips. Although in many application scenarios corrupt data is harmless (“almost” correct result often suffices), control-flow transitions are very sensitive to faults. Indirect jumps, s...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2016